更新日:、 作成日:

VBA セルを選択する (Range.Select, Selection)

はじめに

Excel VBA マクロでセルを選択したり選択範囲を取得する方法を紹介します。

Range("B1").Select または Cells(1, 2).Select メソッドから、セル「B1」を選択できます。

Active メソッドから、セルをアクティブにできます。アクティブセルにキーボードで入力できます。

Selection から、範囲選択しているセルを取得できます。

セルを範囲指定するすべての方法は「セルを範囲指定して取得する」をご覧ください。
複数に分岐するには「Select 文」をご覧ください。

セルを選択する

Range の引数にセル名を指定すると、そのセルを選択できます。

セル「A1」を選択するには Range("A1").Select を入力します。

Range("A1").Select
7

Cells の引数にセルの行と列の番号を指定すると、そのセルを選択できます。

行「2」、列「A」を選択するには Cells(2, 1).Select を入力します。

Cells(1, 1).Select ' A1
Cells(2, 1).Select ' A2
Cells(1, 2).Select ' B1
Cells(2, 2).Select ' B2

そのシートが開かれていないときは「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。

下記の「別シートのセルを選択する」方法でシートを指定すると、そのシートを開いてセルを選択できます。

Range("A1").Select ' このコードのシート (Sheet1) が開かれていないとエラー
Worksheets("Sheet1").Range("A1").Select ' Sheet1 を開いてセルを選択

またはシートを開いてからセルを選択します。

Worksheets("Sheet1").Select ' Sheet1 を開く
Range("A1").Select ' このコードのシート (Sheet1) のセル「A1」を選択
シートを開くには「シートを選択またはアクティブにする」をご覧ください。

セルを範囲選択

セルの範囲「A1」~「B2」を選択するには Range("A1:B2").Select または Range("A1", "B2").Select を入力します。

Range("A1:B2").Select
Range("A1", "B2").Select
8

セルをアクティブにする

セル「A1」をアクティブにするには Range("A1").Activate を入力します。

Range("A1").Activate ' このコードのシート (Sheet1) が開かれていないとエラー
Worksheets("Sheet1").Range("A1").Activate ' Sheet1 を開いてセルをアクティブ
7

またはシートを開いてからセルをアクティブします。

Worksheets("Sheet1").Activate ' Sheet1 を開く
Range("A1").Activate ' このコードのシート (Sheet1) のセル「A1」をアクティブ
シートを開くには「シートを選択またはアクティブにする」をご覧ください。

そのシートが開かれていないときは「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。

セルを範囲選択

セルの範囲「A1」~「B2」を選択するには Range("A1:B2").Activate または Range("A1", "B2").Activate を入力します。左上のセル「A1」がアクティブになります。

Range("A1:B2").Activate
Range("A1", "B2").Activate
8

ただし範囲の左上のセル「A1」がすでにアクティブセルのときは範囲選択されません。

Select と Activate の違い

次の画像のように選択しているとき、セル「B2」~「D4」が選択範囲で、セル「B2」がアクティブセルです。

4

Select も Activate も同じようにセルを選択できますが、選択範囲内のセルを選択するときに違いがあります。セルの範囲「B2」~「C4」を選択しているときに、範囲内のセル「C3」を選択します。

Range("B2:D4").Select
Range("C3").Select

Range("B2:D4").Activate
Range("C3").Activate
  • Select:選択範囲がセル「C3」のみになります。
  • Activate:選択範囲を維持したままセル「C3」をアクティブにします。
5 6

セルを範囲選択するときに Select を使用し、アクティブセルを設定するときに Activate を使用すれば問題ありません。

選択範囲のセルを取得する

選択しているセルを取得するには Selection を入力します。範囲選択しているときは、その範囲のセルを取得します。

Dim s As Range
Set s = Selection

Dim c As Range
For Each c In s
    Debug.Print(c.Value)
Next

アクティブセルを取得するには ActiveCell を入力します。

Dim c As Range
Set c = ActiveCell
Debug.Print(c.Value)

セルの選択を解除する

セルの選択を解除する方法はありません。Excel でもそのような操作は存在しません。どこか 1 つのセルを選択します。

Range("A1").Select

別シートのセルを選択する

開いているシートのセルだけを選択できます。その他のシートに対して行うとエラーが発生します。

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

sheet1
' Sheet1 のセル「A1」を選択
Worksheets("Sheet1").Activate           ' Sheet1 を開く
Worksheets("Sheet1").Range("A1").Select ' Sheet1 を開いて選択
Worksheets(1).Activate           ' Sheet1 を開く
Worksheets(1).Range("A1").Select ' Sheet1 を開いて選択

' Sheet2 のセル「A1」を選択
Worksheets("Sheet2").Activate
Worksheets("Sheet2").Range("A1").Select
Worksheets(2).Activate
Worksheets(2).Range("A1").Select

Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表す Me. が省略されています。

' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"

標準モジュールに Range や Cells を入力すると、開いているシートのセルになります。アクティブシートを表す ActiveSheet. が省略されています。

' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"